#include <iostream>
using namespace std;

const int N=110;
int R,C;
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int a[N][N];
int f[N][N];

int dfs(int i,int j){
	if(f[i][j]) return f[i][j];
	
	int len=1;
	for(int k=0;k<4;k++){
		int x=i+dx[k];
		int y=j+dy[k];
		if(x<1||x>R||y<1||y>C) continue;
		if(a[i][j]<=a[x][y]) continue;
		len=max(len,dfs(x,y)+1);
	}
	return f[i][j]=len;
}

int main()
{
	int len=1;
	cin>>R>>C;
	for(int i=1;i<=R;i++){
		for(int j=1;j<=C;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=R;i++){
		for(int j=1;j<=C;j++){
			len=max(len,dfs(i,j));
		}
	}
	cout<<len<<endl;
	
	return 0;
}
